package br.com.jmed.model;

import java.io.Serializable;
import javax.persistence.*;
import java.util.Date;
import java.util.List;


/**
 * The persistent class for the prontuario database table.
 * 
 */
@Entity
@NamedQueries(@NamedQuery(name = "Prontuario.findToIndex",query="SELECT p FROM Prontuario AS p WHERE (p.pacienteConvenio.paciente.nome LIKE :nomePaciente or :nomePaciente IS NULL) AND (p.pacienteConvenio.convenio.codigo = :codigoConvenio OR :codigoConvenio IS NULL ) AND (p.usuarioInclusao.codigo = :codigoUsuario OR :codigoUsuario IS NULL) AND p.dataInclusao BETWEEN :dataInicio AND :dataFim"))
public class Prontuario implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private Integer codigo;

    @Temporal( TemporalType.DATE)
	@Column(name="data_alteracao")
	private Date dataAlteracao;

    @Temporal( TemporalType.DATE)
	@Column(name="data_entrada")
	private Date dataEntrada;

    @Temporal( TemporalType.DATE)
	@Column(name="data_inclusao")
	private Date dataInclusao;

    @Temporal( TemporalType.DATE)
	@Column(name="data_saida")
	private Date dataSaida;

	private String observacoes;

	private String situacao;
	
	private String tipo;
	//uni-directional many-to-one association to Hospital
	@ManyToOne(fetch=FetchType.EAGER)
	@JoinColumn(name="hospital")
	private Hospital hospital;

	//uni-directional many-to-one association to PacienteConvenio
    @ManyToOne
	@JoinColumns({
		@JoinColumn(name="convenio", referencedColumnName="convenio"),
		@JoinColumn(name="paciente", referencedColumnName="paciente")
		})
	private PacienteConvenio pacienteConvenio;

	//bi-directional many-to-one association to TipoAtendimento
    @ManyToOne(fetch=FetchType.EAGER)
	@JoinColumn(name="tipo_atendimento")
	private TipoAtendimento tipoAtendimentoBean;

	//bi-directional many-to-one association to TipoProcedimento
    @ManyToOne(fetch=FetchType.EAGER)
	@JoinColumn(name="tipo_procedimento")
	private TipoProcedimento tipoProcedimentoBean;

	//uni-directional many-to-one association to Usuario
    @ManyToOne(fetch=FetchType.EAGER)
	@JoinColumn(name="usuario_inclusao")
	private Usuario usuarioInclusao;

	//uni-directional many-to-one association to Usuario
    @ManyToOne(fetch=FetchType.EAGER)
	@JoinColumn(name="usuario_alteracao")
	private Usuario usuarioAlteracao;

	//bi-directional many-to-one association to ProntuarioMateriai
	@OneToMany(mappedBy="prontuario", fetch=FetchType.LAZY)
	private List<ProntuarioMateriai> prontuarioMateriais;

	//bi-directional many-to-one association to ProntuarioMedicamento
	@OneToMany(mappedBy="prontuario", fetch=FetchType.LAZY)
	private List<ProntuarioMedicamento> prontuarioMedicamentos;

	//bi-directional many-to-one association to ProntuarioProcedimento
	@OneToMany(mappedBy="prontuario", fetch=FetchType.LAZY)
	private List<ProntuarioProcedimento> prontuarioProcedimentos;

	//bi-directional many-to-one association to ProntuarioTipoAcomodacao
	@OneToMany(mappedBy="prontuario", fetch=FetchType.LAZY)
	private List<ProntuarioTipoAcomodacao> prontuarioTipoAcomodacaos;

	@ManyToOne
	@JoinColumn(name="medico_solicitante")
	private Medico medicoSolicitante;

	
    public Prontuario() {
    }

	public Integer getCodigo() {
		return this.codigo;
	}

	public void setCodigo(Integer codigo) {
		this.codigo = codigo;
	}

	public Date getDataAlteracao() {
		return this.dataAlteracao;
	}

	public void setDataAlteracao(Date dataAlteracao) {
		this.dataAlteracao = dataAlteracao;
	}

	public Date getDataEntrada() {
		return this.dataEntrada;
	}

	public void setDataEntrada(Date dataEntrada) {
		this.dataEntrada = dataEntrada;
	}

	public Date getDataInclusao() {
		return this.dataInclusao;
	}

	public void setDataInclusao(Date dataInclusao) {
		this.dataInclusao = dataInclusao;
	}

	public Date getDataSaida() {
		return this.dataSaida;
	}

	public void setDataSaida(Date dataSaida) {
		this.dataSaida = dataSaida;
	}

	public String getObservacoes() {
		return this.observacoes;
	}

	public void setObservacoes(String observacoes) {
		this.observacoes = observacoes;
	}

	public String getSituacao() {
		return this.situacao;
	}

	public void setSituacao(String situacao) {
		this.situacao = situacao;
	}

	public Hospital getHospital() {
		return this.hospital;
	}

	public void setHospital(Hospital hospital) {
		this.hospital = hospital;
	}
	
	public PacienteConvenio getPacienteConvenio() {
		return this.pacienteConvenio;
	}

	public void setPacienteConvenio(PacienteConvenio pacienteConvenio) {
		this.pacienteConvenio = pacienteConvenio;
	}
	
	public TipoAtendimento getTipoAtendimentoBean() {
		return this.tipoAtendimentoBean;
	}

	public void setTipoAtendimentoBean(TipoAtendimento tipoAtendimentoBean) {
		this.tipoAtendimentoBean = tipoAtendimentoBean;
	}
	
	public TipoProcedimento getTipoProcedimentoBean() {
		return this.tipoProcedimentoBean;
	}

	public void setTipoProcedimentoBean(TipoProcedimento tipoProcedimentoBean) {
		this.tipoProcedimentoBean = tipoProcedimentoBean;
	}
	
	public Usuario getUsuarioInclusao() {
		return this.usuarioInclusao;
	}

	public void setUsuarioInclusao(Usuario usuarioInclusao) {
		this.usuarioInclusao = usuarioInclusao;
	}
	
	public Usuario getUsuarioAlteracao() {
		return this.usuarioAlteracao;
	}

	public void setUsuarioAlteracao(Usuario usuarioAlteracao) {
		this.usuarioAlteracao = usuarioAlteracao;
	}
	
	public List<ProntuarioMateriai> getProntuarioMateriais() {
		return this.prontuarioMateriais;
	}

	public void setProntuarioMateriais(List<ProntuarioMateriai> prontuarioMateriais) {
		this.prontuarioMateriais = prontuarioMateriais;
	}
	
	public List<ProntuarioMedicamento> getProntuarioMedicamentos() {
		return this.prontuarioMedicamentos;
	}

	public void setProntuarioMedicamentos(List<ProntuarioMedicamento> prontuarioMedicamentos) {
		this.prontuarioMedicamentos = prontuarioMedicamentos;
	}
	
	public List<ProntuarioProcedimento> getProntuarioProcedimentos() {
		return this.prontuarioProcedimentos;
	}

	public void setProntuarioProcedimentos(List<ProntuarioProcedimento> prontuarioProcedimentos) {
		this.prontuarioProcedimentos = prontuarioProcedimentos;
	}
	
	public List<ProntuarioTipoAcomodacao> getProntuarioTipoAcomodacaos() {
		return this.prontuarioTipoAcomodacaos;
	}

	public void setProntuarioTipoAcomodacaos(List<ProntuarioTipoAcomodacao> prontuarioTipoAcomodacaos) {
		this.prontuarioTipoAcomodacaos = prontuarioTipoAcomodacaos;
	}

	public Medico getMedicoSolicitante() {
		return medicoSolicitante;
	}

	public void setMedicoSolicitante(Medico medicoSolicitante) {
		this.medicoSolicitante = medicoSolicitante;
	}

	public String getTipo() {
		return tipo;
	}

	public void setTipo(String tipo) {
		this.tipo = tipo;
	}
	
	
	
}